<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title</title>
</head>
<body>

</body>
<script>
	// const obj2 = {};
	// const obj3 = {a:1,b:2,c:3};
	// // console.log(obj2.toString());// [object Object]
	// const obj = {
	// 	1:100,
	// 	[1+undefined]:200,
	// 	[obj2]:300,// "[object Object]":300
	// 	[obj3]:400// "[object Object]":400
	// }
	// console.log(obj);
	
	
	// `ES5` 的对象属性名都是字符串，这容易造成属性名的冲突。
	//  比如，你使用了一个他人提供的对象，但又想为这个对象添加新的方法，新方法的名字就有可能与现有方法产生冲突。
	//  如果有一种机制，保证每个属性的名字都是独一无二的就好了，这样就从根本上防止属性名的冲突。这就是` ES6 `引入`Symbol`的原因。
	{
		// 他人提供的对象obj
		let obj = {
			a:1,
			b:2,
			c:3,
			fn(){
			
			}
		}
		// 本人在傅香增加了一个属性,一个方法。会产生冲突，将他人的覆盖掉。
		obj.c = 300;
		obj.fn = function(){
		
		}
	}
	
	
	
	// `ES6` 引入了一种新的原始数据类型`Symbol`，表示独一无二的值。它是 JavaScript 语言的第七种数据类型
	
</script>
</html>